1.为什么要使用函数？
	提高代码复用
	便于阅读和交流
2.js中函数有几种声明方式？
	常规函数：
	function 函数名([参数1, 参数2, ...]) {
    代码块
    [return 返回值]
}

	匿名函数：
	let 变量名 = function([参数1, 参数2, ...]){
	    代码块
	    [return 返回值]
	}
	
	箭头函数：
	let 变量名 = function([参数1, 参数2, ...]){
    代码块
    [return 返回值]
}
	构造器函数:
	new Function('x', 'y', 'return x * y;');

8.call和apply的区别和作用。
	这两个函数都是在特定的作用域中调用函数，能改变函数的作用域，实际上是改变函数体内“this”的指代的对象。
	
   a: call(thisObject[,arg1,arg2,arg3...]):
	call方法可以用来代替另一个对象调用一个方法，call方法将一个函数对象上下文从初始的上下文改变为thisObj指定的新对象，
	如果没有提供thisObject参数，那么Global对象被用于thisObject。
	
   b: apply(thisObject[,argArray])
	如果argArray不是一个有效数组或不是arguments对象，那么将导致一个 
	TypeError，如果没有提供argArray和thisObj任何一个参数，那么Global对象将用作thisObj。
	
 二者区别：
	  两者传递的参数不同，call传递的参数时一一列举出来的，apply传递参数形式是数组。

